{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9241b99b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "net_p {'gpu_id': 3, 'net_name': 'composition', 'net_list': [{'net_name': 'TF', 'sizes': [10, 10], 'dim_cor': [10, 10, 3], 'mode': 'tensor'}, {'net_name': 'SIREN', 'dim_in': 3, 'w0_initial': 30, 'dim_hidden': 100, 'dim_out': 1, 'num_layers': 4, 'w0': 1, 'use_bias': True}]}\n",
      "reg_p {}\n",
      "data_p {'data_shape': (10, 10), 'random_rate': 0.5, 'pre_full': True, 'mask_type': 'random', 'data_path': None, 'data_type': 'syn', 'down_sample': [1, 1, 1], 'mask_path': None, 'mask_shape': 'same', 'seeds': 88, 'down_sample_rate': 2, 'noise_mode': None, 'noise_parameter': 0.0, 'x_mode': 'inr', 'batch_size': 128, 'shuffle_if': False, 'xrange': 1, 'ymode': 'completion', 'return_data_type': 'tensor', 'out_dim_one': True}\n",
      "opt_p {'net': {'opt_name': 'Adam', 'lr': 0.0001, 'weight_decay': 0}, 'reg': {'opt_name': 'Adam', 'lr': 0.0001, 'weight_decay': 0}}\n",
      "train_p {'train_epoch': 10, 'task_name': 'completion', 'loss_fn': 'mse'}\n",
      "show_p {'show_type': 'red_img', 'show_content': 'original'}\n",
      "save_p {}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFQ0lEQVR4nO3dsWvVVxzG4e+t0iZiiB1EnCIICq0FQaEuRR0cmiEukWKnkg7FSTpZpDiIQ13abuJgcbIUXRTqUqhKHRQUOrQFBaWZRDLUEDFpQW7/gdwsnoOv8Dzj78B7Q5IPP8hwMhgOhwXkeet1fwHA6sQJocQJocQJocQJodavdTg+NtXlT7nXJvf1mK0bY+uab1558aD5ZlXV3f0TXXZ7+fDWUpfd2Q07m28eXHnZfLOqambxTpfd5ZX5wWrPvTkhlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDghlDgh1GCt/5Xyy5ZPuty+9+ny7z1ma/7ckeabE5/90Hyzqmrb5JYuu738vfi0y+7Sxbnmm1PHLjffrKq6NL67y+6hpz+5fQ/eJOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOvXOrwxtq7Lh85/2/6WvKqqD47/3Hzz+fVTzTerqi7M3e6y28vnP37RZXfX0fPNN3vcwlhVdebk4y67h0Y89+aEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUOKEUIPhcDjycMfmPaMPX8GjZ096zHa5jGvz4bPNN6uqrk3s7bLby8zSvS67C1dPNN/cOH26+WZV1fZNW7vsPly4P1jtuTcnhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhFrz9r1/Zg90uX1v783FHrP15fj7zTff++/f5ptVVR/98U2X3V5+2/VVl92/3n6n+eZ3y38236yqundgssvuu1duun0P3iTihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFCD4XA48nDH5j2jD1/Bo2dPeszW8+unmm9uPny2+WZV1bWJvV12e5lZutdld+HqieabG6dPN9+sqtq+aWuX3YcL9werPffmhFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDr1zqc3bCzy4d+/f3HXXZ3HT3ffLPH7XBVVRfmbnfZ7aXX96HHz2zp4lzzzaqqMycfd9kdxZsTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQq15wdfBlZddPnTq2OUuu/PnjjTf3Dh9uvlmVdW2yS1ddns5Pv1rl90el3H1+v26NL67y+4o3pwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQSpwQajAcDkcejo9NjT58Bdcm9/WYrRtj65pvXnnxoPlmVdXd/RNddnv58NZSl93ZDTubb/a6NXJm8U6X3eWV+cFqz705IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IdSat+8Br483J4QSJ4QSJ4QSJ4QSJ4QSJ4T6H9OInqRHnyYkAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.4169391989707947\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFp0lEQVR4nO3c3cvfcxzH8ffvutlFG8Ns1hq1iBJDuSkl2QkHSjkRLSeOHLk5cHNA4cAOljhwcyA32WSlZqEU2cqkhkJkuR+63OQua9i6dn39A/v9Dubzyevg8Tj8/ur1vfr1e16fs89oGIahgDhT//cfAByZOCGUOCGUOCGUOCHUzKQPL11zRZeXvnb1kj67L69ovvnpklHzzaqqO7Zc2WV32PtBl92ND3zeZfexdX823/x47ynNN6uq3jpmYi5H7b59zx/xuZMTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQk28Tuyuw6u7vPT3d3/usvvszB/NN88aHd98s6rq0xte7LJ76+KBLrt3L6zssvvKF8ubb975157mm1VVj05d1GV3HCcnhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhJp4+96uY4cuL/341z63+l0w1f7vvfjvPt/BijV9bsk7+7eTuux+M5r4UzlqW4f55pv7bjm/+WZV1ZPPjrrsjuPkhFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFDihFATb2069XCfS52eOvRFl91X1y5tvnnt/KHmm1VV22dmu+yed3iuy+6XMwtddjf9c2LzzXMf/6z5ZlXV+qVru+zeOua5kxNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCiRNCTbxeb+vCvi4vfaRO7bK764clzTefmDrQfLOq6rX5ZV12v5k53GX3woPTXXYPDe3/3h8P/N58s6rq/cuXd9kdx8kJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJocQJoUbDMAzjPvxj44YuL/3w9ZO67M6OFptvPj3X5//XVI267G6+5q8uu7u3Hddld/9U++932WL730FV1Yrpg112L5nffsTnTk4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4INTPpw92vr+ry0ntH33XZvX7JuuabD57zbfPNqqotH53WZXf/e7902X1odqHL7sNzE3+CR+Wi+U+ab1ZV7Trx/C674zg5IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IZQ4IdTEq8/maujy0jcubX/jWlXVtj3tN5c/83T70apaf85dXXan5xa77O648/Quu789t7f55g+XndF8s6rqxjf73EC4Y8xzJyeEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEEieEmnjT1lezs11eetvb/3TZ3XP/yc03t6+/p/lmVdVLx/S5LGrl16u77O7f/FOX3U1ntv8ebt+5qvlmVdVNB/v0MI6TE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KNhmEYxn04Pbumy0t/3HBGl92dH61tvjk79tv5bzZc9XOX3emVy7rsXvfCoS67D063Px/eWTih+WZV1WKX1aqbv99yxOdOTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgglTgg18fY94P/j5IRQ4oRQ4oRQ4oRQ4oRQ4oRQ/wLGUakbl5vI0wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.3971797227859497\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.3655118942260742\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.30942821502685547\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.2598768174648285\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFpklEQVR4nO3cya/dYxzH8e/poJVepKZEVxoSMcVcEVKiNZXEsEAi2NmJnaHKwk5IrBqayGVpqCY0hooFNhRtY4hpIUJSbQWlN3qlvffnH+g5C3me+Cxer+U5yee5Q955ds9oGIahgDgL/u8fADgycUIocUIocUIocUKoRZO+PG7ZaV0O3b3hii67Tz93uPnm9IEvm29WVX3/yaYuu8P+PV12V659tMvueyesbL45c/Co5ptVVb/PLemye8Pel474uZsTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQk18fW/3w5d1OfTbjfu77J4+P9V8c3buUPPNqqrPVz/ZZfeGA1932X192blddvfOtL8f1v25vflmVdXW4/r0MI6bE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0JNfH3vmeeHLodeemhpl931h75svrl12RnNN6uqliye67K7ceqSLrv75/v8vHfNfNp8c/+O6eabVVVPrXuhy+41Yz53c0IocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUKoiQ98XTJ7uMuht3V41Kmqat9bjzffPHndE803q6o+OP6cLrvL5/v8z+6Z/aLL7jvHntd8c+qCe5tvVlUtXzrVZfexMZ+7OSGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCHUxNf3flq0uMuh2445v8vurjveaL6557HVzTerqj57ZqbL7oHRwi67Pzx4cZfdrza2/zssGPW5c356t89LjOO4OSGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCHUaBiGYdyXBz9+ucuhO255pcvughr7q/xnvw5Lmm9WVY26rFZdu+3uLrufXj/dZXdmmPgA5H8yNTrcfLOqatFovsvuZb9sOeLnbk4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4IJU4INfHps+03b+5y6No/Pu6yu2X56uabpy6dab5ZVfXz7LIuu3Pv9vmf3XRgV5fdD088q/nmhbt3NN+sqvropFVddsdxc0IocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUKoia/vHb3wcJdDZ7Zv6rJ75toNzTe//+y15ptVVX+d+1CX3R837e2yu2/ni112v7vuyeabO1dc1HyzqurNoc+LiePe9HNzQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQqiJD3ydfd/SLoeeePn9XXZ/6/AI1fvnrG++WVV1599fdNmdHvo8bvXNlc922b1x853NN7fc/nbzzaqq1fOzXXbHcXNCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCqNEwDMO4LxcuXtHl0L82XNVl9+npUfPNNf/0eXHtos23dtmtxUu6zJ6y5pEuuw+csKr55hWzc803q6oW1nyX3av3vnrEz92cEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEEqcEGri63vA/8fNCaHECaHECaHECaHECaHECaH+Bfmds9pM3a04AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.23418694734573364\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.22875083982944489\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.22627466917037964\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFqUlEQVR4nO3dy4vVZRzH8e9xRtOJ0KabXcjoQtDN7KpChFGIRIsWtagIon8giCSiIIggsFpEULSp6EJEVIsWLapRupgVQXYDiRYFkUV2tZzS+fUPzJyFPg9+Fq/X8nfg8zt45s2zexwNwzAUEGfR4f4CwPzECaHECaHECaHECaEmx304tey0Li+dOXpNn93Jqeabz89+03yzqmrHned22e1l7SNfddl9dsnxzTf3/Tf2z/qg/T4s6bK7afdL8z53ckIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUKosdeU9bolb24Yddk9/b/2/+3Lrt9+aL5ZVfXZoyd32b197vsuu0+OVnXZ3fNv+/Phpn07m29WVT23dHWX3YU4OSGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCGUOCHU2Nv3tk1OdXnpmtn9XXbvm9vVfHPb9KXNN6uqFi+a67L7QJ3VZffPoc/33Tx823zzuw8eb75ZVfXYpqe77G5c4LmTE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KNveDr/NkDXV666df3uuzu3fli881jL76t+WZV1VvLV3fZPWro85vd+NcnXXbfOGpN880jL7y1+WZV1TnTp3bZ3bzAcycnhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBInhBp7+97PExNdXjozva7L7qsbnmq+ObPiguabVVV/7R/7T3/wu6M+v9nbK87vsrvvwNB88+yjT2m+WVX14V3ndtldiJMTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQokTQo2GYVjw+rO9D9/e5aUfb/mjy+7EqP1Nbr8Oi5tvVlUtqvbftapq4xcPdtl9/7y7u+z+Xe1vC5yqA803q/r8fVVVXfHjK/M+d3JCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCKHFCqLG3771zwg1dXnrNnve77L42fWXzzZUT/zTfrKr66cDSLrsrJ/d12d3w284uuzMrLmi+eflPHzXfrKp695i1XXbX//jqvM+dnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBKnBBqctyHS0ZzXV6699Nnuuyuvuqe5puff/ZC882qqg9W39tld3Kiz2/2y9fz3xB3qHauu7/55vbjLmu+WVW1dXJZl931Czx3ckIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUIocUKo0TAMw0If7jjp+i4vvW7v1112v9v+RPPNbRuebL5ZVXXH8G2X3YdGZ3bZ3T8addm99s1bmm++vqnPpWwnzs122b1y9yvzPndyQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQqixt+8tW7qqy0u3Tl/UZXdmcqr55rrZPjeuXXLX8i67vazd8mWX3ZuPOKP55prZ/c03q6omasFUDsnVu1+e97mTE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KNvX0POHycnBBKnBBKnBBKnBBKnBBKnBDqf/V6swwWl5KmAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.2252747267484665\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss on test set 0.22503966093063354\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import rss\n",
    "\n",
    "parameters = {}\n",
    "net_list = []\n",
    "# net_list.append({'net_name':'DMF','sizes':[10,10,10]})\n",
    "net_list.append({'net_name':'TF','sizes':[10,10],'dim_cor':[10,10,3],'mode':'tensor'})\n",
    "net_list.append({'net_name':\"SIREN\",'dim_in':3,'w0_initial':30})\n",
    "# net_list.append({'net_name':\"SIREN\",'dim_in':2,'w0_initial':100})\n",
    "parameters['net_p'] = {'gpu_id':3,'net_name':'composition','net_list':net_list}\n",
    "parameters['data_p'] = {'data_shape':(10,10),'random_rate':0.5,\n",
    "                        'pre_full':True,'mask_type':'random'}\n",
    "parameters['train_p'] = {'train_epoch':10}\n",
    "parameters['show_p'] = {'show_type':'red_img','show_content':'original'}\n",
    "rssnet = rss.rssnet(parameters)\n",
    "rss.toolbox.save_json('./json/main_para.json',rssnet.parameter_all)\n",
    "\n",
    "rssnet.show()\n",
    "rssnet.show_p['show_content'] = 'recovered'\n",
    "for i in range(10):\n",
    "    rssnet.train()\n",
    "    rssnet.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b1a80f62",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SirenNet(\n",
       "  (layers): ModuleList(\n",
       "    (0): Siren(\n",
       "      (activation): Sine()\n",
       "    )\n",
       "    (1): Siren(\n",
       "      (activation): Sine()\n",
       "    )\n",
       "    (2): Siren(\n",
       "      (activation): Sine()\n",
       "    )\n",
       "    (3): Siren(\n",
       "      (activation): Sine()\n",
       "    )\n",
       "  )\n",
       "  (last_layer): Siren(\n",
       "    (activation): Identity()\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rssnet.net.net_list[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5f8e3665",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f57afd6a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "356724ac",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "77c6ca0e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "717929dd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "dd724d23",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([], dtype=torch.int64)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch as t\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "a = t.tensor([[1,2],[3,4]])\n",
    "b = np.array([[1,2],[3,4]])\n",
    "\n",
    "(b==1).shape\n",
    "a.shape\n",
    "a[b==1]\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c2633f9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "088c38dc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94c18505",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "45514c58",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "17ac365a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f52028a9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "50653019",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d3059c18",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0495fb48",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8056d80e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f30e1cbf",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "48e225c7",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "23184135",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5054cfe9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "deb3365e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f5807cf5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0dc795e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([65536])\n"
     ]
    }
   ],
   "source": [
    "for data in rssnet.data_train['train_loader']:\n",
    "    print(data[1].shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0bdad319",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'data_p': {'batch_size': 65536}}\n"
     ]
    }
   ],
   "source": [
    "import rss\n",
    "parameters = rss.toolbox.load_json('./json/main_para.json')\n",
    "print(parameters)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "da832ca4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d28ceeb1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1fc77a6d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0ce9b4a7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "vscode": {
   "interpreter": {
    "hash": "6bfba3d9cec53d1fa1d59f855399e26dded27ccf19705ae5a5112c9714ee83ae"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
